import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.util.Date;
import java.util.HashMap;

class Main 
{
	public static void main(String[] args) throws IOException
	{
		// Dit is onze bank:
		Bank b;
		try
		{	ObjectInputStream ois = new ObjectInputStream(new FileInputStream("Bank.obj"));
			b = (Bank) ois.readObject();
			ois.close();
		}
		catch(Exception e)
		{	b = new Bank("De HogeschoolBank");

			//RekeningType's
			RekeningType rt1 = new RekeningType("spaarRekening",2.0,1.0,400,0,false,"Een Spaar rekening");
			b.voegRekeningTypeToe(rt1);
			RekeningType rt2 = new RekeningType("betaalRekening",0,3.0,1000,500,true,"Een betaal rekening");
			b.voegRekeningTypeToe(rt2);
			
			// De medewerkers
			BankMedewerker j = new BankMedewerker("jeroen", "IBB 107", "Utrecht", "test", new Date(), 1);
			b.voegMedewerkerToe(j);
			
			// hier worden 4 rekeningen (en bijbehorende klanten) aangemaakt:
	
			Klant k0 = new Klant("Piet", "Dorpsweg 1", "Goes", "test");
			b.voegKlantToe(k0);
			Rekening r0 = new Rekening(12345678, k0,rt2);
			b.voegToe(r0);
			
			Rekening r4 = new Rekening(87654321, k0,rt1);
			b.voegToe(r4);
	
			Klant k1 = new Klant("Jan", "Hoofdstraat 4", "Markelo", "test");
			b.voegKlantToe(k1);
			Rekening r1 = new Rekening(13579, k1,rt1);
			b.voegToe(r1);
	
			Klant k2 = new Klant("Loesje", "Krooiweg 33", "Deil", "test");
			b.voegKlantToe(k2);
			Rekening r2 = new Rekening(24680, k2,rt1);
			b.voegToe(r2);
	
			Klant k3 = new Klant("Bibi", "Kerkstraat 46", "Buurmalsen", "test");
			b.voegKlantToe(k3);
			Rekening r3 = new Rekening(845362, k3,rt1);
			b.voegToe(r3);
	
			r0.stort(234098.34);
			r1.stort(345.76);
			r2.stort(13.75);
			r3.stort(1056.45);
			r0.boekOverNaar(60.00, r2);
			r1.boekOverNaar(78.50, r0);
			r0.neemOp(12.34);
		}	
		
		// Roep nieuwe GUI aan uncomment voor gebruik
		new LoginGUI(b);
		
		/*// Laat de gebruiker inloggen en een menukeuze maken
		System.out.println("Dit is de applicatie van DeBank");
		InputStreamReader isr = new InputStreamReader(System.in);
		BufferedReader br = new BufferedReader(isr);

		//Inloggen
		System.out.print("Voer uw naam in: ");
		System.out.flush();
		String bd = "niets";
		bd = br.readLine();
		HashMap hm = b.vanNaamKlantNaarRekening();
		Rekening r = (Rekening)hm.get(bd);
		if (r == null) {
			System.out.println("Naam niet van bestaande klant!");
			System.exit(0);
		}
		Klant k = r.getRekeningHouder();
		System.out.println("Welkom " + k.getNaam() + " uit: "+ k.getPlaats() + "\n" + "Uw saldo is: " + r.getSaldo());

		//Menu
		while (true){
			System.out.print("Wat wilt u doen?" + "\n" + 
					"1 = Storten" + "\n" + 
					"2 = Opnemen" + "\n" + 
					"3 = Overboeken" + "\n" + 
					"4 = Stoppen" + "\n" + 
					"5 = Transactieoverzicht" + "\n" +
					"Maak uw keuze (1/2/3/4/5): ");
			System.out.flush();
			bd = br.readLine();
			if (bd.equals("1")){
				//StortenUI stu = new StortenUI(r);}
				StortenGUI stu = new StortenGUI(r);}				
			else if (bd.equals("2")){
				//new OpnemenUI(r);
				new OpnemenGUI(r);}
			else if (bd.equals("3")){
				new OverboekenGUI(r,b);}
			else if (bd.equals("4")){
				break;}
			else if (bd.equals("5")){
				//new OverzichtUI(r);
				new OverzichtGUI(r);
			}
		}
		System.out.println("Dit was de applicatie van DeBank");*/
	}
}